﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using VentaElectrodomesticos.Sql;
using System.Data.SqlClient;
using VentaElectrodomesticos.Utilities;

namespace VentaElectrodomesticos.AbmCliente
{
    public partial class FormModificacionCliente : Form
    {
        private ClaseSQL sql = new ClaseSQL();
        private Cliente cliente;

        public FormModificacionCliente(Cliente unCliente)
        {
            InitializeComponent();
            cliente = unCliente;

            this.tbDniNue.Text = unCliente.dni;
            this.tbNombreNue.Text = unCliente.nombre;
            this.tbApellidoNue.Text = unCliente.apellido;
            this.tbMailNue.Text = unCliente.mail;
            this.tbTelefonoNue.Text = unCliente.telefono;
            this.tbDireccionNue.Text = unCliente.direccion;
            sql.llenarCombo(cbProvinciaNue, "SELECT idProvincia, nomProvincia FROM LAG.provincias ORDER BY idProvincia");
            this.cbProvinciaNue.SelectedIndex = cbProvinciaNue.FindStringExact(unCliente.provincia.Value.ToString());

            if (unCliente.status.Equals('1'))
            {
                btnHabilitar.Visible = false;
            }
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            if (this.validarCampos())
            {
                try
                {
                    sql.Open();
                    KeyValuePair provincia = (KeyValuePair)cbProvinciaNue.SelectedItem;
                    String idProvincia = provincia.Key.ToString();

                    String query = "UPDATE LAG.personas " +
                        "SET dni = '" + tbDniNue.Text +
                        "', nombre = '" + tbNombreNue.Text +
                        "', apellido = '" + tbApellidoNue.Text +
                        "', mail = '" + tbMailNue.Text +
                        "', telefono = '" + tbTelefonoNue.Text +
                        "', direccion = '" + tbDireccionNue.Text +
                        "', idProvincia = '" + idProvincia + "' " +
                        "WHERE idPersona = " + cliente.id.ToString();

                    int filasAfectadas = sql.ejecutarNoReader(query);
                    this.Close();
                }
                catch (SqlException ex)
                {
                    MessageBox.Show(ex.Message, "Error al intentar guardar");
                }
                finally
                {
                    sql.Close();
                }
            }
        }

        

        private void btnLimpiar_Click(object sender, EventArgs e)
        {
            Utils.ClearTextBoxes(this.gbNuevos);
            cbProvinciaNue.SelectedIndex = -1;
        }

        private void btnHabilitar_Click(object sender, EventArgs e)
        {
            bool habilitado = sql.habilitarRegistro("LAG.personas", "idPersona", cliente.id.ToString());

            if (habilitado)
            {
                btnHabilitar.Visible = false;
            }
        }

        private bool validarCampos()
        {
            bool vDni = this.validarDni();
            bool vNombre = !Utils.campoVacio(tbNombreNue, errorProvider, "Ingrese un nombre");
            bool vApellido = !Utils.campoVacio(tbApellidoNue, errorProvider, "Ingrese un apellido");
            bool vMail = !Utils.campoVacio(tbMailNue, errorProvider, "Ingrese un mail");
            bool vTelefono = !Utils.campoVacio(tbTelefonoNue, errorProvider, "Ingrese un telefono");
            bool vDireccion = !Utils.campoVacio(tbDireccionNue, errorProvider, "Ingrese una direccion");
            bool vProvincia = !Utils.campoVacio(cbProvinciaNue, errorProvider, "Seleccione una provincia");

            return vDni && vNombre && vApellido && vMail && vTelefono && vDireccion && vProvincia;
        }

        private bool validarDni()
        {
            bool valido = true;

            if (tbDniNue.Text.Trim().Length == 0)
            {
                valido = false;
                errorProvider.SetError(tbDniNue, "Ingrese un numero de DNI");
            }
            else
            {
                errorProvider.SetError(tbDniNue, "");
            }

            return valido;
        }


        private void ingresarSoloNumericos(object sender, KeyPressEventArgs e)
        {
            if (!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), "[0-9\b]+"))
                e.Handled = true;
        }
    }
}
